package cn.iocoder.yudao.module.erp.dal.dataobject.saleorder;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 销售订单 DO
 *
 * @author maxuxu
 */
@TableName("erp_sale_order")
@KeySequence("erp_sale_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SaleOrderDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 销售单号
     */
    private String billNo;
    /**
     * 销售日期
     */
    private LocalDateTime billDate;
    /**
     * 销售方
     */
    private String billContacter;
    /**
     * 销售员
     */
    private String billContacterName;
    /**
     * 销售员电话
     */
    private String billContacterMobile;
    /**
     * 仓库id
     */
    private Integer warehouseId;
    /**
     * 仓库名称
     */
    private String warehouseName;
    /**
     * 客户订单号
     */
    private String customerOrderNo;
    /**
     * 客户id
     */
    private Long customerId;
    /**
     * 客户名称（公司）
     */
    private String customerName;
    /**
     * 客户联系人
     */
    private String customerContacterName;
    /**
     * 联系电话
     */
    private String customerMobile;
    /**
     * 总数量
     */
    private BigDecimal aggregateQuantity;
    /**
     * 总金额
     */
    private BigDecimal aggregateAmount;
    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;
    /**
     * 优惠后总金额
     */
    private BigDecimal totalAmount;
    /**
     * 交付地址
     */
    private String deliveryAddress;
    /**
     * 项目id
     */
    private Integer projectId;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 结算方式id
     */
    private Integer settlementId;
    /**
     * 结算方式
     */
    private String settlementName;
    /**
     * 备注
     */
    private String remarks;
    /**
     * 附件
     */
    private String file;
    /**
     * 是否同步采购
     */
    private Boolean syncPurchase;
    /**
     * 是否收款
     */
    private Boolean syncPay;
    /**
     * 是否出库
     */
    private Boolean syncOut;
    /**
     * 是否开票
     */
    private Boolean syncInvoice;
    /**
     * 类型 ： 0 默认销售单 1 采购单
     */
    private int type;
    /**
     * 过期时间
     */
    private LocalDateTime expireTime;

    /**
     * 物品信息，包含物品和数量
     */
    private String goodsInfo;
}